<?php

namespace PhpYes\Modules\Cmd;


final class ArgumentDefinition
{
    /** @var string */
    private $name;
    /** @var string */
    private $short;
    /** @var string */
    private $long;
    /** @var bool */
    private $require;
    /** @var bool */
    private $requireValue;
    /** @var string */
    private $description;

    /**
     * ArgumentTpl constructor.
     * @param string $name
     * @param string $short
     * @param string $long
     * @param bool $require
     * @param bool $requireValue
     * @param string $description
     */
    public function __construct($name, $short = '', $long = '', $require = false, $requireValue = false, $description = '')
    {
        $this->name = $name;
        $this->short = $short;
        $this->long = $long;
        $this->require = $require;
        $this->requireValue = $requireValue;
        $this->description = $description;
    }

    /**
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @return string
     */
    public function getShort()
    {
        return $this->short;
    }

    /**
     * @param string $short
     */
    public function setShort($short)
    {
        $this->short = $short;
    }

    /**
     * @return string
     */
    public function getLong()
    {
        return $this->long;
    }

    /**
     * @param string $long
     */
    public function setLong($long)
    {
        $this->long = $long;
    }

    /**
     * @return boolean
     */
    public function isRequire()
    {
        return $this->require;
    }

    /**
     * @param boolean $require
     */
    public function setRequire($require)
    {
        $this->require = $require;
    }

    /**
     * @return boolean
     */
    public function isRequireValue()
    {
        return $this->requireValue;
    }

    /**
     * @param boolean $requireValue
     */
    public function setRequireValue($requireValue)
    {
        $this->requireValue = $requireValue;
    }

    /**
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * @param string $description
     */
    public function setDescription($description)
    {
        $this->description = $description;
    }

}